//Element.h
#ifndef _ELEMENT_H_
#define _ELEMENT_H_

class Visitor;

class Element
{
public:
    virtual ~Element();
    virtual void Accept(Visitor* vis) = 0;

protected:
    Element();

private:
};

class ConcreteElementA:public Element
{
public:
    ConcreteElementA();
    ~ConcreteElementA();
    void Accept(Visitor* vis);

protected:
private:
};

class ConcreteElementB:public Element
{
public:
    ConcreteElementB();
    ~ConcreteElementB();
    void Accept(Visitor* vis);

protected:
private:
};

#endif //~_ELEMENT_H_ 
